package org.company.ci.actions;

import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.Set;

import org.company.ci.domain.Pedido;
import org.company.ci.domain.ProductoPedido;
import org.company.ci.domain.RegistroEntradaPedido;
import org.company.ci.services.PedidoService;
import org.company.ci.services.RegistroEntradaPedidoService;

public class PedidoAction extends AppSecurityActionSupport {
	
	private ArrayList<Pedido> pedidos = new ArrayList<Pedido>();
	
	private ArrayList<ProductoPedido> productosPedido = new ArrayList<ProductoPedido>();
	
	private PedidoService pedidoService;
	
	private RegistroEntradaPedidoService registroEntradaPedidoService;
	
	private Pedido pedido;
	
	
	
	public String listPedidos() throws Exception {
		if (!existUserSession()) {
			System.out.println("Usuario no Autorizado se redirecciona ");
			return ACCESS_DENIED;
		}
		
		pedidos = pedidoService.getListPedidos();
		
		return "success";
	}

	
	public String menuPedidos() throws Exception {
		if (!existUserSession()) {
			System.out.println("Usuario no Autorizado se redirecciona ");
			return ACCESS_DENIED;
		}		
		return "success";
	}
	
	public String verPedidos() throws Exception {
		if (!existUserSession()) {
			System.out.println("Usuario no Autorizado se redirecciona ");
			return ACCESS_DENIED;
		}
		
		pedidos = new ArrayList<Pedido>();
		
		return "success";
	}
	
	public String entradaPedidos() throws Exception {
		if (!existUserSession()) {
			System.out.println("Usuario no Autorizado se redirecciona ");
			return ACCESS_DENIED;
		}
		Pedido pedidoBD = pedidoService.getPedidoById(pedido.getIdPedido());
		
		setPedido(pedidoBD);
		
		
		Set<ProductoPedido> prods = pedidoBD.getProductos();
		
		productosPedido = new ArrayList<ProductoPedido>();
		
		for (ProductoPedido pro : prods) {
			productosPedido.add(pro);
		}
		
		return "success";
	}
	
	public String registrarEntrada() throws Exception {
		if (!existUserSession()) {
			System.out.println("Usuario no Autorizado se redirecciona ");
			return ACCESS_DENIED;
		}
		
		System.out.println(pedido.getIdPedido());
		
		//registro del pedido
		RegistroEntradaPedido registroEntrada = new RegistroEntradaPedido();
		registroEntrada.setFecha(new GregorianCalendar().getTime());
		registroEntrada.setPedido(pedido);
		
		
		registroEntradaPedidoService.saveRegistroEntradaPedido(registroEntrada);
		
		pedido.setEstado(Pedido.ENTREGADO);
		
		pedidoService.savePedido(pedido);
		
		return "success";
	}
	

	public ArrayList<Pedido> getPedidos() {
		return pedidos;
	}

	public void setPedidos(ArrayList<Pedido> pedidos) {
		this.pedidos = pedidos;
	}

	public PedidoService getPedidoService() {
		return pedidoService;
	}

	public void setPedidoService(PedidoService pedidoService) {
		this.pedidoService = pedidoService;
	}

	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}

	public ArrayList<ProductoPedido> getProductosPedido() {
		return productosPedido;
	}

	public void setProductosPedido(ArrayList<ProductoPedido> productosPedido) {
		this.productosPedido = productosPedido;
	}

	public RegistroEntradaPedidoService getRegistroEntradaPedidoService() {
		return registroEntradaPedidoService;
	}

	public void setRegistroEntradaPedidoService(
			RegistroEntradaPedidoService registroEntradaPedidoService) {
		this.registroEntradaPedidoService = registroEntradaPedidoService;
	}
	
}
